package com.chzc.sys.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chzc.po.User;
import com.chzc.sys.mapper.provider.UserProvider;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * <p>
 * 用户信息表 Mapper 接口
 * </p>
 *
 * @author CV大魔王
 * @since 2021-05-24
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {


    /**
     * 添加用户与角色关系
     * @param id 主键
     * @param userId 用户id
     * @param roleId 角色id
     */
    @Insert("INSERT INTO sys_user_role (id, user_id, role_id) VALUES (#{id}, #{userId}, #{roleId})")
    void insertUserRole(String id,String userId,String roleId);


    /**
     * 通过用户 id 删除用户角色关系表数据
     *
     * @param userId 用户id
     * @return 逻辑值 是否删除成功
     */
    @Delete("DELETE FROM sys_user_role WHERE user_id = #{userId}")
    boolean deleteUserRoleByUserId(@Param("userId") String userId);


    /**
     * 新增用户角色关系数据到 sys_user_role
     *
     * @param userId  用户id
     * @param roleIds 角色ids集合
     * @return 逻辑值 是否添加成功
     */
    @InsertProvider(type = UserProvider.class, method = "saveUserRole")
    boolean saveUserRole(@Param("userId") String userId, @Param("roleIds") List<String> roleIds);

    /**
     * 根据用户id查询此用户拥有的角色ids
     *
     * @param id 用户id
     * @return 角色 id 集合
     */
    @Select("SELECT role_id FROM sys_user_role WHERE user_id = #{id}")
    List<String> findRoleIdsById(@Param("id") String id);

    /**
     * 获取所有用户名
     * @return
     */
    @Select("SELECT id from sys_user ")
    List<String> findAllUsername();
}
